#ifndef _CYCLE_BUFFER_H_
#define _CYCLE_BUFFER_H_

#include "stdint.h"
#include "stdbool.h"

#ifdef __cplusplus
extern "C" {
#endif

#define MAX_BUFF_SIZE (2048)    //缓冲区大小

// 循环缓冲区结构体定义
typedef struct {
    uint8_t* buffer;      // 数据缓冲区指针
    uint16_t head;        // 读指针
    uint16_t tail;        // 写指针
    uint16_t capacity;    // 缓冲区容量
    uint16_t length;      // 当前数据长度
    bool overflow;        // 溢出标志位
} CycleBuffer_t;

void CycleBuffer_Init(CycleBuffer_t* cb, uint8_t* buffer, uint16_t capacity);

// 写入数据（支持单字节/批量写入）
bool CycleBuffer_Write(CycleBuffer_t* cb, const uint8_t* buffer, uint16_t len);

// 读取数据（支持单字节/批量读取）
bool CycleBuffer_Read(CycleBuffer_t* cb, uint8_t* buffer, uint16_t len);

// 状态查询函数
bool CycleBuffer_IsFull(const CycleBuffer_t* cb);

bool CycleBuffer_IsEmpty(const CycleBuffer_t* cb);

bool CycleBuffer_IsOverflow(const CycleBuffer_t* cb);

// 数据长度查询
uint16_t CycleBuffer_GetCacheSize(const CycleBuffer_t* cb);

// 剩余空间查询
uint16_t CycleBuffer_GetRemainingSize(const CycleBuffer_t* cb);



#ifdef __cplusplus
}
#endif

#endif  //_CYCLE_BUFFER_H_

